home *** CD-ROM | disk | FTP | other *** search
/ Aminet 5 / Aminet 5 - March 1995.iso / Aminet / util / rexx / xdmd1.lha / MultiFiles.xdme < prev    next >
Text File  |  1994-10-29  |  5KB  |  162 lines

  1. /* MultiFiles.dme: Uses the ReqTools File Requester to delete, crunch,
  2.    decrunch, copy, move, print, or load multiple files */
  3. /* Copyright © 1994 Fergus Duniho */
  4.  
  5. if ~show("L","rexxreqtools.library") then
  6.     if ~addlib("rexxreqtools.library",0,-30) then exit
  7.  
  8. if ~show("L","rexxarplib.library") then
  9.     if ~addlib("rexxarplib.library",0,-30) then exit
  10.  
  11. parse arg com .
  12.  
  13. select
  14.     when com = "ViewArc" then do
  15.         hailstr = "Select Archives to View"
  16.         oktext = "_View"
  17.     end
  18.     when com = "Unarchive" then do
  19.         hailstr = "Select Archives to Extract"
  20.         oktext = "_Extract"
  21.     end
  22.     otherwise do
  23.         hailstr = "Select Files to" com
  24.         oktext = "_" || com
  25.     end
  26. end
  27. tagstr = "rt_reqpos=reqpos_centerscr rtfi_flags=freqf_multiselect|freqf_patgad"
  28. if com = "Delete" then tagstr = tagstr || "|freqf_selectdirs|freqf_save"
  29. address 'XDME.1'
  30. options results
  31. 'rxresult $path'
  32. P = result
  33. 'rxresult $fname'
  34. N = result
  35.  
  36. if com = "ViewArc" | com = "Unarchive" then do
  37.     P = "Misc:Archives"
  38.     N = ""
  39. end
  40.  
  41. call rtfilerequest(P,N,hailstr,oktext,tagstr,files)
  42. If files = 0 Then Exit
  43.  
  44. Select
  45.     When com = "Delete" Then Do X = 1 to files.count
  46.         Call Remove files.X
  47.     End
  48.     When com = "Unpack" Then Do X = 1 to files.count
  49.         C = 'xpack "' || files.X || '"'
  50.         Say "Unpacking" files.X "..."
  51.         Address Command C
  52.     End
  53.     When com = "Copy" | com = "Move" Then Do
  54.         if files.count = 1 then do
  55.             tagstr = "rt_reqpos=reqpos_centerscr rtfi_flags=freqf_patgad"
  56.             dest = rtfilerequest(P,N,"Select Destination",,tagstr)
  57.         end
  58.         else do
  59.             tagstr = "rt_reqpos=reqpos_centerscr rtfi_flags=freqf_nofiles"
  60.             dest = rtfilerequest(P,,"Select Destination",,tagstr)
  61.         end
  62.         if rtresult = 1 then do
  63.             do X = 1 to files.count
  64.                 C = com '"' || files.X || '" "' || dest || '"'
  65.                 Say C
  66.                 Address Command C
  67.             End
  68.         End
  69.     End
  70.     When com = "Print" Then Do
  71.         D = Request(22,19,"Select Destination", "PRT:", " Print ", " Cancel ")
  72.         If D ~= "" Then Do
  73.             Do X = 1 to files.count
  74.                 C = 'Type "' || files.X || '" to "' || D || '"'
  75.                 Say C
  76.                 Address Command C
  77.             End
  78.         End
  79.     End
  80.     When com = "Run" Then Do X = 1 to files.count
  81.         C = 'runback "' || files.X || '"'
  82.         Say C
  83.         Address Command C
  84.     End
  85.     When com = "Load" Then Do
  86.         PL = Lastpos("/", files.1) /* PL means Length of Path Name */
  87.         If PL = 0 Then PL = Lastpos(":", files.1)
  88.         Do X = 1 to files.count
  89.             N = delstr(files.X, 1, PL)
  90.             C = "newwindow newfile (" || files.X || ") menuadd Window ("
  91.             C = C || N || ") (select (window=" || N || "))"
  92.             C
  93.             call Mode(files.X)
  94.         End
  95.     End
  96.     When com = "Unarchive" Then Do
  97.         tagstr = "rt_reqpos=reqpos_centerscr rtfi_flags=freqf_nofiles|freqf_save"
  98.         dest = rtfilerequest(P,,"Select Destination",,tagstr)
  99.         if rtresult = 1 then do
  100.             do X = 1 to files.count
  101.                 tail = upper(right(files.X, 3))
  102.                 select
  103.                     when tail = "LHA" | tail = "LZH" | tail = "RUN" then
  104.                         unarc = 'tools:compression/lha -m -a x "' || files.X || '"' '"' || dest || '"'
  105.                     when tail = "ZIP" then
  106.                         unarc = 'tools:compression/unzip -o "' || files.X || '"'
  107.                     when tail = "ZOO" then
  108.                         unarc = 'tools:compression/zoo x./ "' || files.X || '"'
  109.                     otherwise iterate
  110.                 end
  111.                 Say unarc
  112.                 Address Command unarc
  113.             End
  114.         End
  115.     End
  116.     When com = "ViewArc" Then Do
  117.         Call Delete 'T:Archives'
  118.         Do X = 1 to files.count
  119.             tail = upper(right(files.X, 3))
  120.             select
  121.                 when tail = "LHA" | tail = "LZH" | tail = "RUN" then
  122.                     view = 'tools:compression/lha >>T:Archives v'
  123.                 when tail = "ZIP" then
  124.                     view = 'tools:compression/unzip >>T:Archives -v'
  125.                 when tail = "ZOO" then
  126.                     view = 'tools:compression/zoo >>T:Archives -list'
  127.                 otherwise iterate
  128.             end
  129.             C = 'execute (' || view '"' || files.X || '")'
  130.             C
  131.         End
  132.         'execute (C:runback SYS:Utilities/Most T:Archives)'
  133.     End
  134.     Otherwise Do X = 1 to files.count
  135.         C = 'xpack "' || files.X || '" method' com
  136.         Say "Packing" files.X "with" com "compression ..."
  137.         Address Command C
  138.     End
  139. End
  140. Exit
  141.  
  142. Remove: Procedure
  143.     parse arg fname
  144.     if word(statef(fname), 1) = "DIR" then do
  145.         call filelist(Pattern(fname), files, , "E")
  146.         do x = 1 to files.0
  147.             Call Remove files.x
  148.         end
  149.     end
  150.     Say "Deleting" fname "..."
  151.     call delete fname
  152.     call delete fname || ".info"
  153. return
  154.  
  155. Pattern: Procedure
  156.     parse arg dir
  157.     if right(dir, 1) ~= ":" then
  158.         pat = dir || "/*"
  159.     else
  160.         pat = dir || "*"
  161. return pat
  162.